package com.portal.framework.util;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import sun.misc.BASE64Encoder;


/**
 * Project: PhoneMusic
 * 
 * Remark: MD5 (使用MD5加密，解密的方法)
 * 
 * Author: Darren
 * 
 * Create Date: 2009-9-15
 */

public class MD5 {
	/**
	 * 利用MD5进行加密
	 * @param str 待加密的字符串
	 * @return 加密后的字符串
	 * @throws NoSuchAlgorithmException 没有这种产生消息摘要的算法
	 * @throws UnsupportedEncodingException 编码错误产生的异常
	 */
	public static String encoderByMd5(String str) throws NoSuchAlgorithmException,UnsupportedEncodingException {
		//确定计算方法
		MessageDigest md5 = MessageDigest.getInstance("MD5");
		//JDK中提供了非常方便的BASE64Encoder和BASE64Decoder,用它们可以非常方便的完成基于BASE64的编码和解码。
		BASE64Encoder base64en = new BASE64Encoder();
		//加密后的字符串
		String newstr = base64en.encode(md5.digest(str.getBytes("UTF-8")));
		return newstr;
	}
	
	/**
	 * 测试的方法
	 * @param args
	 * @throws Exception 
	 */
	@SuppressWarnings("static-access")
	public static void main(String[] args) throws Exception {
		MD5 md5=new MD5();
		System.out.println("***加密前**:sb123456");
		System.out.println("***加密后**:"+md5.encoderByMd5("sb123456").toUpperCase());
	}
}